home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-installer.exe / bin / gi / __init__.pyc (.txt) next >
Python Compiled Bytecode  |  2014-12-31  |  4KB  |  96 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. from __future__ import absolute_import
  5. from pkgutil import extend_path
  6. __path__ = extend_path(__path__, __name__)
  7. import sys
  8. import os
  9. import importlib
  10. import types
  11. _static_binding_error = 'When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183'
  12. if 'gobject' in sys.modules:
  13.     raise ImportError(_static_binding_error)
  14. from  import _gi
  15. from _gi import _gobject
  16. from _gi import _API
  17. from _gi import Repository
  18. from _gi import PyGIDeprecationWarning
  19. _API = _API
  20. PyGIDeprecationWarning = PyGIDeprecationWarning
  21. _versions = { }
  22. _overridesdir = os.path.join(os.path.dirname(__file__), 'overrides')
  23. version_info = _gobject.pygobject_version[:]
  24. __version__ = '{0}.{1}.{2}'.format(*version_info)
  25.  
  26. class _DummyStaticModule(types.ModuleType):
  27.     __path__ = None
  28.     
  29.     def __getattr__(self, name):
  30.         raise AttributeError(_static_binding_error)
  31.  
  32.  
  33. sys.modules['glib'] = _DummyStaticModule('glib', _static_binding_error)
  34. sys.modules['gobject'] = _DummyStaticModule('gobject', _static_binding_error)
  35. sys.modules['gio'] = _DummyStaticModule('gio', _static_binding_error)
  36. sys.modules['gtk'] = _DummyStaticModule('gtk', _static_binding_error)
  37. sys.modules['gtk.gdk'] = _DummyStaticModule('gtk.gdk', _static_binding_error)
  38.  
  39. def check_version(version):
  40.     if isinstance(version, str):
  41.         version_list = tuple(map(int, version.split('.')))
  42.     else:
  43.         version_list = version
  44.     if version_list > version_info:
  45.         raise ValueError("pygobject's version %s required, and available version %s is not recent enough" % (version, __version__))
  46.  
  47.  
  48. def require_version(namespace, version):
  49.     repository = Repository.get_default()
  50.     if namespace in repository.get_loaded_namespaces():
  51.         loaded_version = repository.get_version(namespace)
  52.         if loaded_version != version:
  53.             raise ValueError('Namespace %s is already loaded with version %s' % (namespace, loaded_version))
  54.     if namespace in _versions and _versions[namespace] != version:
  55.         raise ValueError('Namespace %s already requires version %s' % (namespace, _versions[namespace]))
  56.     available_versions = repository.enumerate_versions(namespace)
  57.     if not available_versions:
  58.         raise ValueError('Namespace %s not available' % namespace)
  59.     if version not in available_versions:
  60.         raise ValueError('Namespace %s not available for version %s' % (namespace, version))
  61.     _versions[namespace] = version
  62.  
  63.  
  64. def get_required_version(namespace):
  65.     return _versions.get(namespace, None)
  66.  
  67.  
  68. def require_foreign(namespace, symbol = None):
  69.     '''Ensure the given foreign marshaling module is available and loaded.
  70.  
  71.     :param str namespace:
  72.         Introspection namespace of the foreign module (e.g. "cairo")
  73.     :param symbol:
  74.         Optional symbol typename to ensure a converter exists.
  75.     :type symbol: str or None
  76.     :raises: ImportError
  77.  
  78.     :Example:
  79.  
  80.     .. code-block:: python
  81.  
  82.         import gi
  83.         import cairo
  84.         gi.require_foreign(\'cairo\')
  85.  
  86.     '''
  87.     
  88.     try:
  89.         _gi.require_foreign(namespace, symbol)
  90.     except Exception:
  91.         e = None
  92.         raise ImportError(str(e))
  93.  
  94.     importlib.import_module('gi.repository', namespace)
  95.  
  96.